package com.作业.Day14.泛型;


import java.util.ArrayList;
import java.util.List;

/**
 * 	定义一个形状类（类名：Shape）
 * 		info() //获取形状信息方法
 * 	定义一个三角形类继承于形状类
 * 	定义一个长方形类继承于形状类
 * 	定义一个画布类(Canvas类)
 * 		定义一个画布方法
 * 			参数为：List集合类型，泛型设定类型通配符，类型通配符上限是Shape类型
 * 			方法体：实现各种形状的info方法打印输出
 *
 *
 */
public class Homework2 {
    public static void main(String[] args) {
        Rectangle rectangle = new Rectangle();
        List<Rectangle> list = new ArrayList<>();
        list.add(rectangle);
        Triangle triangle = new Triangle();
        List<Triangle> list1 = new ArrayList<>();
        list1.add(triangle);
        Canvas canvas = new Canvas();
        canvas.action(list);
        canvas.action(list1);
    }
}
abstract class Shape{
   abstract void info();
}
class Triangle extends Shape{

    @Override
    void info() {
        System.out.println("三角形");
    }
}
class Rectangle extends Shape{

    @Override
    void info() {
        System.out.println("长方形");
    }
}
class Canvas{

     void action(List<? extends Shape> list){
         for (Shape shape : list) {
             shape.info();
         }
     }
}